package com.kk.demo.java8.stream.base01;

import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Stream;

/**
 * 开始使用stream
 * @author liujun
 * @date 2016年8月28日
 * @verion 0.0.1
 */
public class StreamUse01 {

    public StreamUse01() {
    }

    public static void main(String[] args) {
        StreamUse01 stream = new StreamUse01();
        stream.useStream();
    }

    public void useStream() {
        // 声明一个集合
        List<Integer> arrayInt = Arrays.asList(100, 10, 101, 90, 88, 66, 23, 33, 44, 105, 108);
        // 通过集合得到一个stream对象
        Stream<Integer> intStream = arrayInt.stream();

        Consumer<String> printFuncion = this::PrintValue;

        // 首先进行过滤
        intStream.filter((n) -> n > 100)
                // 进行排序
                .sorted((a, b) -> Integer.compare(b, a))
                // 进行map运算
                .map(this::mapOper)
                // 进行从小到大排序
                .sorted()
                // 进行打印
                .forEach(printFuncion);
    }

    public void PrintValue(String a) {
        System.out.print(a + "\t");
    }

    public String mapOper(Integer input) {
        return input + "|a";
    }
}
